//
//  ChivoxInnerEngine.h
//  ChivoxEngine
//
//  Created by xianchen.peng on 2018/8/28.
//  Copyright © 2018年 Chivox. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "ChivoxServiceListener.h"

@interface ChivoxService : NSObject
@property (nonatomic, weak) id<ChivoxServiceListener> listener;

/**
 创建ChivoxService实例的工厂方法。
 @param type 要创建的ChivoxService实例的类型，目前支持：ws/wss/http/https/native/empty。
 @param listener 向将要创建的ChivoxService实例添加事件监听。
 @return 创建出来的ChivoxService实例。
 */
+ (ChivoxService *)create:(NSString *)type :(id<ChivoxServiceListener>)listener;

/**
 构造方法
 */
- (id)init:(id<ChivoxServiceListener>)listener;

#pragma mark - 对事件发送的封装

- (void)fireLoadSuccess;
- (void)fireLoadFail:(NSDictionary *)res;
- (void)fireStartSuccess:(NSDictionary *)res;
- (void)fireStartFail:(NSDictionary *)res;
- (void)fireJsonResult:(NSDictionary *)res;
- (void)fireBinResult:(NSDictionary *)res;
- (void)fireErrorResult:(NSDictionary *)res;


#pragma mark - 以下方法子类必须重写

/**
 ChivoxService的加载
 */
- (void)load:(NSDictionary *)cfg;

/**
 开始评测
 */
- (void)start:(NSDictionary *)param;

/**
 传入音频数据
 */
- (void)feed:(NSData *)data;

/**
  结束评测
 */
- (void)stop:(NSDictionary *)param;

/**
 重置。重置后应回到 start 之前的状态。
 */
- (void)reset;

/**
 ChivoxService的卸载
 */
- (void)unload;

#pragma mark - 以上方法子类必须重写


@end
